import base.advanced.io


#  类名定义 首字母大写
# self代表类的实例,类的方法必须有一个额外的第一个参数名称,按照惯例它的名称是 self
class Human:
    """
    doc....lalala
    """

    # 构造方法
    def __init__(self,name,age):
        self.name=name
        self.age=age
    #
    def hello(self):
        print(f"hello my name is:{self.name},age is: {self.age}")



if __name__ == '__main__':
    # 实例化
    xjp=Human("xi jin pin", 90)
    # 调用实例 函数
    xjp.hello()
    # 修改实例 属性
    xjp.name="xin-jin-pin"
    # 调用实例  属性
    print(xjp.name)
    # 删除实例属性 属性会直接从对象中移除，而不是被设置为 None
    # AttributeError: 'Human' object has no attribute 'age'
    # del xjp.age
    print(xjp.age)
    xjp.age=89

    #其他方法 使用属性
    # 全局函数
    print(delattr(xjp,"name"))
    print(hasattr(xjp,"name"))
    print(setattr(xjp,"name","x_j_p"))
    print(getattr(xjp,"name","default没有这个属性"))
    # 对象函数
    print(xjp.__getattribute__("age"))

    #类属性
    #类属性字典
    print(xjp.__dict__)
    #文档
    print(xjp.__doc__)
    #类名
    print(xjp.__class__.__name__)
    print(Human.__module__)
